package com.baichang.taoshunda.service;

import com.baichang.framework.excelption.ServiceException;

import java.util.List;
import java.util.Map;

/**
 * Created by ${wushenglu} on 2018/1/30.
 */
public interface ServiceLifeService {

    /**
     * 非必选步骤，查询单个话费充值商品：
     * 1.返回指定面值，手机号所在区域下优先级最高商品，优先级："市>省>全国，固定面值>任意充"
     * 2.在同样充值金额下，满足客户选择不同商品需求，可选择与 "查询话费直充商品列表"接口分场景使用
     * 3.可放弃此步骤，直接根据手机号码、充值金额直接生成订单(知道商品编号的前提下)。
     *
     * @param mobileNo       手机号
     * @param rechargeAmount 充值金额
     * @return
     */
    Map<String, Object> getMobileItemInfo(String mobileNo, String rechargeAmount) throws ServiceException;

    /**
     * 电话费充值--创建记录
     *
     * @param mobileNo           手机号
     * @param rechargeAmount     充值金额
     * @param payMethod          支付方式
     * @param itemId
     * @param userId
     * @param isDiscount
     * @param preferentialAmount @return
     * @param userName
     * @param type
     */
    Map<String, Object> createdMobileBill(String mobileNo, String rechargeAmount, int payMethod, String itemId, int userId, int isDiscount, Double preferentialAmount, String userName, int type) throws ServiceException;

    /**
     * 电话费充值-调用充值记录
     *
     * @param userRechargeId
     * @return
     */
    Map<String, Object> payMobileBill(int userRechargeId) throws ServiceException;

    /**
     * 查询水电煤类标准商品列表
     *
     * @param pageNo    当前页
     * @param pageSize  每页条数
     * @param province  省份   -----暂时不用
     * @param city      城市
     * @param userId    用户编号
     * @param itemName
     * @param projectId
     * @return
     */
    Map<String, Object> waterCoalList(int pageNo, int pageSize, String province, String city, int userId, String itemName, String projectId) throws ServiceException;

    /**
     * 水电煤充值
     *
     * @param itemId          机构编号
     * @param payPrice        支付金额
     * @param rechargeAccount 充值账号
     * @param userRechargeId  用户下单编号
     * @param userId          用户编号
     * @param type
     * @return
     */
    Map<String, Object> waterCoalPyBill(String itemId, String payPrice, String rechargeAccount, int userRechargeId, int userId, int type) throws ServiceException;

    /**
     * 查询指定单一水电煤商品的所有标准属性
     *
     * @param itemId
     * @return
     */
    Map<String, Object> waterCoalItemPropsList(String itemId) throws ServiceException;

    /**
     * @param itemId
     * @param account
     * @param projectId
     * @param unitId
     * @param province
     * @param unitName
     * @param cityId
     * @param modeId
     * @param city
     * @return
     */
    Map<String, Object> getAccountInfo(String itemId, String account, String projectId, String unitId, String province, String unitName, String cityId, String modeId, String city) throws ServiceException;

    /**
     * 加油卡信息
     *
     * @param province  加油卡归属省份名称(不包含"省"，如"江苏","全国")
     * @param operator  加油卡供应商名称,中石化sinopec,中石油cnpc
     * @param gasCardNo 加油卡卡号
     * @return
     * @throws ServiceException
     */
    Map<String, Object> gasCardGetAccountInfo(String province, String operator, String gasCardNo) throws ServiceException;

    /**
     * （查询加油卡类标准商品列表）
     *
     * @return
     */
    Map<String, Object> gasCardList() throws ServiceException;

    /**
     * 加油卡充值
     *
     * @param itemId         商品编号
     * @param gasCardTel     持卡人电话
     * @param gasCardName    持卡人名字
     * @param gasCardNo      卡号
     * @param userRechargeId
     * @return
     */
    Map<String, Object> gasCardPayBill(String itemId, String gasCardTel, String gasCardName, String gasCardNo, String userRechargeId) throws ServiceException;

    /**
     * 查询充值记录
     *
     * @param userId
     * @param type
     * @param nowPage
     * @param pageSize
     * @return
     */
    List<Map<String, Object>> getUserRechargeHistory(int userId, int type, int nowPage, int pageSize);

    /**
     * 根据手机号码查询号码详情，包括省市运营商及余额等
     * 1.此为话费充值辅助接口，存在查询次数限制，不单独开放，请知悉；
     * 2.账户详情依赖对接查询模板，请确认上级已经对接过，否则返回为空；
     * 3.根据对接的查询模板，返回的详情可能存在差异，查询成功率也存在差异，建议选择对接成功率高的模板对接；
     * 4.模板质量由资源方决定，审核与使用问题可联系或者咨询大区经理。
     *
     * @param phoneNo
     * @return
     */
//    Map<String, Object> getPhoneInfo(String phoneNo);
}
